<!-- 当我们试图调用模块或者对象的某个接口时，却发现这个接口的格式并不符合目前的需求。
这时候有两种解决办法，第一种是修改原来的接口实现，但如果原来的模块很复杂，或者我们拿
到的模块是一段别人编写的经过压缩的代码，修改原接口就显得不太现实了。第二种办法是创建
一个适配器，将原接口转换为客户希望的另一个接口，客户只需要和适配器打交道。 -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 已知这种格式能自动自动渲染
      var guangdongCity = [
        {
          name: 'shenzhen',
          id: 11,
        },
        {
          name: 'guangzhou',
          id: 12,
        },
      ];

      // 之后是这中数据格式
      var guangdongCity = {
        shenzhen: 11,
        guangzhou: 12,
        zhuhai: 13,
      };

      const guangdongObj = {
        shenzhen: 11,
        guangzhou: 12,
        zhuhai: 13,
      };
      // 创建适配器满足之前需求
      function obj2Arr(obj) {
        if (Object.prototype.toString.call('a').slice(8, -1) !== 'Object') return [];
        return Object.keys(obj).map((name) => ({
          id: obj[name],
          name,
        }));
      }

      console.log(obj2Arr(guangdongObj));
    </script>
  </body>
</html>
